#ifndef ALGO_EVA_MODULE_FACTORY_H
#define ALGO_EVA_MODULE_FACTORY_H

#include "algohub_export.h"
#include "algohub_common_type.h"

namespace algo
{
	class AlgoEvaluatorModuleBase;
	class AlgoEvaluatorModuleFactoryPrivate;
	class ALGOHUB_EXPORT AlgoEvaluatorModuleFactory final
	{
	public:
		static AlgoEvaluatorModuleFactory* Single();
		static std::shared_ptr<AlgoEvaluatorModuleBase> create(algobase::EvaluateL2IndexType type);

	private:
		AlgoEvaluatorModuleFactory();
		~AlgoEvaluatorModuleFactory();
		AlgoEvaluatorModuleFactoryPrivate* d;
	};
}

#endif // !ALGO_EVA_MODULE_FACTORY_H